home *** CD-ROM | disk | FTP | other *** search
/ PC World 2007 January / PCWorld_2007-01_cd.bin / v cisle / autoit / autoit-v3.2.0.1-setup.exe / Include / Math.au3 < prev    next >
Text File  |  2006-06-20  |  10KB  |  298 lines

  1. ; Include Version:1.37  (9/20/2005)
  2. #include-once
  3.  
  4. ; ------------------------------------------------------------------------------
  5. ;
  6. ; AutoIt Version: 3.0
  7. ; Language:       English
  8. ; Description:    Functions that assist with mathematical calculations.
  9. ;
  10. ; ------------------------------------------------------------------------------
  11.  
  12.  
  13. ;=============================================================================
  14. ;
  15. ; Function Name:   _Ceil()
  16. ;
  17. ; Description:     Returns the next integer value above the specified value.
  18. ;
  19. ; Syntax:          _Ceil( $nValue )
  20. ;
  21. ; Parameter(s);    $nValue     = Number to be evaluated.
  22. ;
  23. ; Requirement(s):  External:   = None.
  24. ;                  Internal:   = None.
  25. ;
  26. ; Return Value(s): On Success: = Returns next integer value above $nValue.
  27. ;                  On Failure: = Returns 0.
  28. ;                  @ERROR:     = 0 = No error.
  29. ;                                1 = $nValue isn't a number.
  30. ;
  31. ; Author(s):       Brian Keene <brian_keene at yahoo dot com>
  32. ;
  33. ; Note(s):         Any value from the integer itself up to the next integer
  34. ;                  will be returned as the next integer above it (ex. "25.3"
  35. ;                  returns "26").  But due to restrictions on the number of
  36. ;                  decimal places the Int() built-in function can handle.  A
  37. ;                  number with greater than 14 decimal places (ex.
  38. ;                  "25.999999999999999") will be considered the next integer
  39. ;                  above the integer part of the value & then 1 will be added
  40. ;                  to that (ex. _Ceil("25.999999999999999") returns "27" NOT 26
  41. ;                  because there are 15 "9"'s after the decimal point).
  42. ;
  43. ; Example(s):
  44. ;   Dim $Ans = Number( InputBox( "_Ceil() Test", "Please enter a # to test." ) )
  45. ;   MsgBox( 4096, "_Ceil() Test", "Ceil( " & $Ans & " )    = " & _Ceil( $Ans ) )
  46. ;
  47. ;=============================================================================
  48. Func _Ceil($nValue)
  49.     If (Not IsNumber($nValue)) Then
  50.         SetError(1)
  51.         Return (0)
  52.     EndIf
  53.     
  54.     SetError(0)
  55.     Return ( Int($nValue + .99999999))
  56. EndFunc   ;==>_Ceil
  57.  
  58. ;=============================================================================
  59. ;
  60. ; Function Name:   _Degrees()
  61. ;
  62. ; Description:     Converts radians to degrees.
  63. ;
  64. ; Syntax:          _Degrees( $nRadians )
  65. ;
  66. ; Parameter(s);    $nRadians   = Radians to be converted into degrees.
  67. ;
  68. ; Requirement(s):  External:   = None.
  69. ;                  Internal:   = None.
  70. ;
  71. ; Return Value(s): On Success: = Returns the degrees converted from radians.
  72. ;                  On Failure: = Returns a blank string.
  73. ;                  @ERROR:     = 0 = No error.
  74. ;                                1 = $nRadians is not a number.
  75. ;
  76. ; Author(s):       Erifash <erifash at gmail dot com>
  77. ;
  78. ; Notes:           Multiplies instead of dividing.
  79. ;
  80. ; Example(s):
  81. ;   MsgBox(4096, "_Degree() Test", "_Degree( 3.1415 ) = " & _Radian( 3.1415 ))
  82. ;
  83. ;=============================================================================
  84. Func _Degree($nRadians)
  85.         If not Number($nRadians) Then
  86.         SetError(1)
  87.         Return ""
  88.     EndIf
  89.     Return $nRadians * 57.2957795130823
  90. EndFunc  ;==>_Degree()
  91.  
  92. ;=============================================================================
  93. ;
  94. ; Function Name:   _Floor()
  95. ;
  96. ; Description:     Returns the next integer value below the specified value.
  97. ;
  98. ; Syntax:          _Floor( $nValue )
  99. ;
  100. ; Parameter(s);    $nValue     = Number to be evaluated.
  101. ;
  102. ; Requirement(s):  External:   = None.
  103. ;                  Internal:   = None.
  104. ;
  105. ; Return Value(s): On Success: = Returns next integer value above $nValue.
  106. ;                  On Failure: = Returns 0.
  107. ;                  @ERROR:     = 0 = No error.
  108. ;                                1 = $nValue isn't a number.
  109. ;
  110. ; Author(s):       David Nuttall <danuttall at autoit3 com>
  111. ;
  112. ; Note(s):         Due to restrictions on the number of decimal places the Int()
  113. ;                  built-in function can handle. A number with greater than 14
  114. ;                  decimal places (ex. "25.999999999999999") will be considered
  115. ;                  the next integer above the integer part of the value (ex.
  116. ;                  _Floor("25.999999999999999") returns "26" NOT 25 because
  117. ;                  there are 15 "9"'s after the decimal point).
  118. ;
  119. ; Example(s):
  120. ;   Dim $Ans = Number( InputBox( "_Floor() Test", "Please enter a # to test." ) )
  121. ;   MsgBox( 4096, "_Floor() Test", "Floor( " & $Ans & " )    = " & _Floor( $Ans ) )
  122. ;
  123. ;=============================================================================
  124. Func _Floor($value)
  125.   If IsInt($value) Then
  126.      Return $value
  127.   ElseIf $value < 0 Then
  128.      Return  Int($value - 1)
  129.   Else
  130.      Return Int($value)
  131.   EndIf
  132. EndFunc ;==>Floor
  133.  
  134.  
  135. ;===============================================================================
  136. ;
  137. ; Function Name:    _MathCheckDiv()
  138. ; Description:      Checks to see if numberA is divisable by numberB
  139. ; Parameter(s):     $i_NumA   - Dividend
  140. ;                   $i_NumB   - Divisor
  141. ; Requirement(s):   None.
  142. ; Return Value(s):  On Success - 1 if not evenly divisable
  143. ;                              - 2 if evenly divisable
  144. ;                   On Failure - -1 and @error = 1
  145. ; Author(s):        Wes Wolfe-Wolvereness <Weswolf at aol dot com>
  146. ;
  147. ;===============================================================================
  148. Func _MathCheckDiv($i_NumA, $i_NumB = 2)
  149.     If Number($i_NumA) = 0 Or Number($i_NumB) = 0 Or Int($i_NumA) <> $i_NumA Or Int($i_NumB) <> $i_NumB Then
  150.         Return -1
  151.         SetError(1)
  152.     ElseIf Int($i_NumA / $i_NumB) <> $i_NumA / $i_NumB Then
  153.         Return 1
  154.     Else
  155.         Return 2
  156.     EndIf
  157. EndFunc   ;==>_MathCheckDiv
  158.  
  159.  
  160. ;===============================================================================
  161. ;
  162. ; Function Name:   _Max()
  163. ;
  164. ; Description:     Evaluates which of the two numbers is higher.
  165. ;
  166. ; Syntax:          _Max( $nNum1, $nNum2 )
  167. ;
  168. ; Parameter(s):    $nNum1      = First number
  169. ;                  $nNum2      = Second number
  170. ;
  171. ; Requirement(s):  External:   = None.
  172. ;                  Internal:   = None.
  173. ;
  174. ; Return Value(s): On Success: = Returns the higher of the two numbers
  175. ;                  On Failure: = Returns 0.
  176. ;                  @ERROR:     = 0 = No error.
  177. ;                                1 = $nNum1 isn't a number.
  178. ;                                2 = $nNum2 isn't a number.
  179. ;
  180. ; Author(s):       Jeremy Landes <jlandes at landeserve dot com>
  181. ;
  182. ; Note(s):         Works with floats as well as integers
  183. ;
  184. ; Example(s):
  185. ;   #Include <Math.au3>
  186. ;   MsgBox( 4096, "_Max() - Test", "_Max( 3.5, 10 )    = " & _Max( 3.5, 10 ) )
  187. ;   Exit
  188. ;
  189. ;===============================================================================
  190. Func _Max($nNum1, $nNum2)
  191.     ; Check to see if the parameters are indeed numbers of some sort.
  192.     If (Not IsNumber($nNum1)) Then
  193.         SetError(1)
  194.         Return (0)
  195.     EndIf
  196.     If (Not IsNumber($nNum2)) Then
  197.         SetError(2)
  198.         Return (0)
  199.     EndIf
  200.     
  201.     If $nNum1 > $nNum2 Then
  202.         Return $nNum1
  203.     Else
  204.         Return $nNum2
  205.     EndIf
  206. EndFunc   ;==>_Max
  207. ;===============================================================================
  208.  
  209.  
  210. ;===============================================================================
  211. ;
  212. ; Function Name:   _Min()
  213. ;
  214. ; Description:     Evaluates which of the two numbers is lower.
  215. ;
  216. ; Syntax:          _Min( $nNum1, $nNum2 )
  217. ;
  218. ; Parameter(s):    $nNum1      = First number
  219. ;                  $nNum2      = Second number
  220. ;
  221. ; Requirement(s):  External:   = None.
  222. ;                  Internal:   = None.
  223. ;
  224. ; Return Value(s): On Success: = Returns the higher of the two numbers
  225. ;                  On Failure: = Returns 0.
  226. ;                  @ERROR:     = 0 = No error.
  227. ;                                1 = $nNum1 isn't a number.
  228. ;                                2 = $nNum2 isn't a number.
  229. ;
  230. ; Author(s):       Jeremy Landes <jlandes at landeserve dot com>
  231. ;
  232. ; Note(s):         Works with floats as well as integers
  233. ;
  234. ; Example(s):
  235. ;   #Include <Math.au3>
  236. ;   MsgBox( 4096, "_Min() - Test", "_Min( 3.5, 10 )    = " & _Min( 3.5, 10 ) )
  237. ;   Exit
  238. ;
  239. ;===============================================================================
  240. Func _Min($nNum1, $nNum2)
  241.     ; Check to see if the parameters are indeed numbers of some sort.
  242.     If (Not IsNumber($nNum1)) Then
  243.         SetError(1)
  244.         Return (0)
  245.     EndIf
  246.     If (Not IsNumber($nNum2)) Then
  247.         SetError(2)
  248.         Return (0)
  249.     EndIf
  250.     
  251.     If $nNum1 > $nNum2 Then
  252.         Return $nNum2
  253.     Else
  254.         Return $nNum1
  255.     EndIf
  256. EndFunc   ;==>_Min
  257. ;=============================================================================
  258. ;
  259. ; Function Name:   _Radian()
  260. ;
  261. ; Description:     Converts degrees to radians.
  262. ;
  263. ; Syntax:          _Radian( $nDegrees )
  264. ;
  265. ; Parameter(s);    $nDegrees   = Degrees to be converted into radians.
  266. ;
  267. ; Requirement(s):  External:   = None.
  268. ;                  Internal:   = None.
  269. ;
  270. ; Return Value(s): On Success: = Returns the radians converted from degrees.
  271. ;                  On Failure: = Returns a blank string.
  272. ;                  @ERROR:     = 0 = No error.
  273. ;                                1 = $nDegrees is not a number.
  274. ;
  275. ; Author(s):       Erifash <erifash at gmail dot com>
  276. ;
  277. ; Notes:           In mathmatics and physics, the radian is a unit of
  278. ;                  angle measurement. One radian is approximately
  279. ;                  57.2957795130823 degrees. To figure out that number,
  280. ;                  use the formula ( 180 / pi ). Since pi is used in
  281. ;                  the formula the result is infinite in decimal places.
  282. ;                  The fact that AutoIt has a limited number of decimal
  283. ;                  places makes the result more innaccurate as you move
  284. ;                  down the decimal line. This is perfect for basic
  285. ;                  physics calculations though.
  286. ;
  287. ; Example(s):
  288. ;   MsgBox(4096, "_Radian() Test", "_Radian( 35 ) = " & _Radian( 35 ))
  289. ;
  290. ;=============================================================================
  291. Func _Radian($nDegrees)
  292.         If not Number($nDegrees) Then
  293.         SetError(1)
  294.         Return ""
  295.     EndIf
  296.     Return $nDegrees / 57.2957795130823
  297. EndFunc  ;==>_Radian()
  298.